/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.deployment.servicoimpl;

import br.com.deployment.entidade.protocolo.Lancamento;
import br.com.deployment.entidade.protocolo.Pagamento;
import br.com.deployment.entidade.protocolo.Protocolo;
import br.com.deployment.interfaces.LancamentoDaoIn;
import br.com.deployment.servico.LancamentoServico;
import br.com.deployment.utilitario.Msg;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;

/**
 *
 * @author luciano
 */
@Stateless
@LocalBean
public class LancamentoServicoImpl implements LancamentoServico{

    @EJB
    private LancamentoDaoIn dao;
    
    @Override
    public void salvar(Lancamento lancamento) {
        try{
            dao.save(lancamento);
        }catch(Exception e){
            Msg.messagemError("Erro ao salvar lancamento");
        }        
    }

    @Override
    public void atualizar(Lancamento lancamento) {
        try {
            dao.update(lancamento);
        } catch (Exception e) {
            Msg.messagemError("Erro ao atualizar lancamento");
        }
    }

    @Override
    public void remover(Lancamento lancamento) {
        try {
            dao.delete(lancamento);
        } catch (Exception e) {
            Msg.messagemError("Erro ao removerlancamento");
        }
    }

    @Override
    public Lancamento find(int id) {
        try {
            return dao.find(id);
        } catch (Exception e) {
            Msg.messagemError("Erro ao salvar lancamento");
        }
        return null;
    }

    @Override
    public List<Protocolo> findProtocolos(Lancamento lancamento) {
        try {
            return dao.findProtocolos(lancamento);
        } catch (Exception e) {
            Msg.messagemError("Erro ao buscar protocolo.");
        }
        return null;
    }

    @Override
    public List<Pagamento> findPagamentos(Lancamento lancamento) {
        try {
            return dao.findPagamentos(lancamento);
        } catch (Exception e) {
            Msg.messagemError("erro ao buscar pagamentos.");
        }
        return null;
    }

    @Override
    public List<Lancamento> findAll() {
        return dao.findAll();
    }
    
    @Override
    public BigDecimal totalAreceber(Date date){
        try{
            return dao.totalAreceber(date);
        }catch(Exception e){
            Msg.messagemError("Erro ao calcular valor a receber");
        }
        return new BigDecimal(0);
    }

    @Override
    public BigDecimal totalPago(Date date) {
        try {
            return dao.totalRecebido(date);
        } catch (Exception e) {
            Msg.messagemError("Erro ao buscar total pago");
        }
        return new BigDecimal(0);
    }

    @Override
    public boolean existe(Lancamento lancamento) {
        try {
            return dao.existe(lancamento);
        } catch (Exception e) {
            Msg.messagemError("Erro ao verificar existencia");
        }
        return false;
    }

    @Override
    public List<Lancamento> buscarLancamento(Lancamento lancamento) {
        try {
            return dao.buscarLancamento(lancamento);
        } catch (Exception e) {
            Msg.messagemError("Erro ao buscar lançamentos.");
        }
        return null;
    }

    
}